#include <cstdlib>
#include <iostream>
#include <conio.h>
#include <windows.h>
#include <time.h>
using namespace std;
#include "classmenu.h"
#include "Aqua.h"
#include "Bolt.h"
#include "Clash.h"
#include "Kurcaci.h"
#include "Lahan.h"
#include "boolean.h"
#include "classinventory.h"
#include "player.h"
#include "tanaman.h"
#include "Times.h"
#include "story.h"

 // Jika ingin melakukan compile di NetBeans, projectnya diinclude file library libwinmm.a
 // klik kanan folder project (yang di kiri layar) >> set configuration >> customize... >> linker
 // >> libraries >> add library (file libwinmm.a ada di folder Mingw >> lib >> libwinmm.a


 // Jika ingin melakukan compile g++ di command prompt,,
 // hilangkan tanda komentar untuk include di bawah,
 // kemudian compile dengan perintah:
 // g++ -o main main.cpp -lwinmm

/*
#include "classmenu.cpp"
#include "Aqua.cpp"
#include "Bolt.cpp"
#include "Clash.cpp"
#include "Kurcaci.cpp"
#include "Lahan.cpp"
#include "classinventory.cpp"
#include "player.cpp"
#include "tanaman.cpp"
#include "Times.cpp"
#include "story.cpp"
*/

Player P("");
Lahan L;
Times T;
inventory I;
Aqua A;
Bolt B;
Clash C;
Story S;
Menu M;
GreenAlgoe CP(1,5); //GreenAlgoe ditanam di koordinat 1,5

int main() {
	srand(time(0));
    cout << "### Driver pengetes kelas GreenAlgoe ###" << endl;
    getch();
    cout << "GreenAlgoe ditanam di koordinat 1,5" << endl;
    getch();
    cout << "HappyMeter dari GreenAlgoe : " << CP.CheckHappyMeter() << endl;
    getch();

    cout << "Kode inventory dari GreenAlgoe : " << CP.GetKodeTanaman() << endl;
    getch();
    cout << "GreenAlgoe ini sudah dipanen sebanyak (NHarvested , jika hanya sekali panen nilainya -999) : "
         << CP.GetNHarvested() << endl;
    getch();
    cout << "Batas umur tanaman ini adalah (Age) : " << CP.GetAge() << " hari" << endl;
    getch();
    cout << "GreenAlgoe ini bisa ditanam dalam kode musim : " << CP.GetMusimable() << endl;
    getch();
    cout << "kode dari musim :\n0 = spring\n1 = summer\n2 = fall\n3 = winter\n4 = spring + summer + fall + winter"
            "\n5 = spring + summer\n6 = summer + fall" << endl;
    getch();
    cout << "Titik panen dari GreenAlgoe : " << CP.GetTitikPanen() << endl;
    getch();

    cout << "\nDilakukan penambahan terhadap HappyMeter sebanyak 10 poin..." << endl;
    getch();
    CP.SetHappyMeter (10);
    cout << "HappyMeter dari GreenAlgoe : " << CP.CheckHappyMeter() << endl;
    getch();
    cout << "\nDilakukan pengurangan terhadap umur (Age) dari tanaman sebanyak 1 hari..." << endl;
    getch();
    CP.DecAge();
    cout << "Batas umur tanaman ini adalah (Age) : " << CP.GetAge() << " hari" << endl;
    getch();
    cout << "\nDilakukan pengesetan terhadap umur(Age) dari tanaman menjadi 20 hari..." << endl;
    getch();
    CP.SetAge(20);
    cout << "Batas umur tanaman ini adalah (Age) : " << CP.GetAge() << " hari" << endl;
    getch();
    cout << "\nDilakukan pengesetan terhadap TitikPanen dari tanaman menjadi 135..." << endl;
    getch();
    CP.SetTitikPanen(135);
    cout << "Titik panen dari GreenAlgoe : " << CP.GetTitikPanen() << endl;
    getch();
    cout << "\nDilakukan pengesetan terhadap NHarvested dari tanaman menjadi 5..." << endl;
    getch();
    CP.SetNHarvested(5);
    cout << "GreenAlgoe ini sudah dipanen sebanyak (NHarvested , jika hanya sekali panen nilainya -999) : "
         << CP.GetNHarvested() << endl;
    getch();

    cout << "\nDilakukan pengesetan terhadap HappyMeter tanaman menjadi TitikPanen..." << endl;
    getch();
    CP.SetHappyMeter(CP.GetTitikPanen());
    cout << "Status lahan yang menandakan tanaman ini sudah siap dipanen : " << L.getStatus(1,5) << endl;
    getch();
    cout << "\nDilakukan pemanenan terhadap tanaman ini..." << endl;
    getch();
    CP.Harvested();
    cout << "Status lahan yang menandakan tanaman ini sudah terpanen (menjadi tanaman dewasa lagi) : " << L.getStatus(1,5) << endl;
    getch();
    cout << endl;
	cout << "Titik panen dari GreenAlgoe menjadi : " << CP.GetTitikPanen() << endl;


    I.InsertInventory(9,10); //mengeset isi inventory yang akan dijual
    I.Sell(0,1); //menjual
    cout << "Harga jual dari ChronoPlant (before) : " << I.GetMoney() << endl;
    I.SetMoney(0); //mengeset uang jadi nol lagi
    getch();

    cout << "Tanaman ini dimakan..." << endl;
    getch();
    GreenAlgoe::EatEffect();
    
    I.Sell(0,1); //menjual
    cout << "Harga jual dari ChronoPlant (after) : " << I.GetMoney() << endl;
    getch();

    cout << "\n\n### Driver GreenAlgoe sudah selesai ###" << endl;
    getch();
    

    return 0;
}

